A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The growing presence of the Internet as well as other computer networks such as intranets and extranets has brought many new applications in e-commerce, education and other areas. Each computing device in the distributed computing environment has its own resources, such as processing and storage resources, as well as the ability to communicate with other computing devices. Computing devices can include servers, workstations, desktop computers, laptop computers, personal digital assistants (PDAs), other hand held computing devices, cell phones and so forth. Further, each computing device is typically configured with software for carrying out specific tasks. Based on the number of users, network availability and other factors, the distributed computing environment may or may not be able to meet the demands which are made of it.
In particular, the demands which are placed on a distributed computing environment are dynamic in nature, and can vary in different aspects. For example, a particular computing device on which software is executing may be in high demand. In such cases, it is possible to provision additional computing devices with copies of the software to improve the availability of the software. For example, data centers typically have many servers which run multiple copies or instances of the same software. Further, in some cases, software runs at a particular computing device, and data is maintained at a particular computing device, based on convention, lack of portability or compatibility, or proprietary interests of the software provider or network administrator. As a result, the available resources in a distributed computing network are not optimally allocated based on current conditions in the network.